//
//  SeparatorCellData.h
//  18Birdies
//
//  Created by Lc on 15/4/2.
//  Copyright (c) 2015年 Lc. All rights reserved.
//

#import "LcCellData.h"

typedef enum {
  SEPARATORY_TYPE_NORMAL,
  SEPARATORY_TYPE_NORMAL_INSET,
  SEPARATORY_TYPE_NO_INSET,
  SEPARATORY_TYPE_DOTTED_LINE,
} SeparatorType;

@interface SeparatorCellData : LcCellData <NSCopying>

// 1 pixed height separator with default color
+ (SeparatorCellData*)normalSeparatorDataWithLeftInset:(CGFloat)leftInset
                                       backgroundColor:(UIColor*)backgroundColor;
+ (SeparatorCellData*)normalSeparatorDataWithLeftRightInsetHeight:(CGFloat)height
                                                        leftInset:(CGFloat)leftInset
                                                       rightInset:(CGFloat)rightInset
                                                  backgroundColor:(UIColor*)backgroundColor;
// 1 pixed height separator with custom color
+ (SeparatorCellData*)customSeparatorDataWithLeftInset:(CGFloat)leftInset
                                             lineColor:(UIColor*)lineColor
                                       backgroundColor:(UIColor*)backgroundColor;
+ (SeparatorCellData*)customSeparatorDataWithLeftInset:(CGFloat)leftInset
                                            rightInset:(CGFloat)rightInset
                                             lineColor:(UIColor*)lineColor
                                       backgroundColor:(UIColor*)backgroundColor;
// 1 pixed height separator with 30% white color
+ (SeparatorCellData*)lightWhiteSeparatorDataWithLeftInset:(CGFloat)leftInset
                                           backgroundColor:(UIColor*)backgroundColor;

+ (SeparatorCellData*)lightSandSeparatorDataWithHeight:(CGFloat)height showShadow:(BOOL)isShow;
+ (SeparatorCellData*)transparentSeparatorDataWithHeight:(CGFloat)height showShadow:(BOOL)isShow;
+ (SeparatorCellData*)separatorDataWithHeight:(CGFloat)height
                                        color:(UIColor*)color
                                   showShadow:(BOOL)isShow;

// 1 point height dotted line separator
+ (SeparatorCellData*)dottedLinelSeparatorDataWithLeftInset:(CGFloat)leftInset;
+ (SeparatorCellData*)dottedLinelSeparatorDataWithLeftInset:(CGFloat)leftInset
                                                 rightInset:(CGFloat)rightInset;

@property(nonatomic, assign, readonly) SeparatorType type;
@property(nonatomic, strong, readonly) UIColor* lineColor;
@property(nonatomic, assign, readonly) CGFloat leftInset;
@property(nonatomic, assign, readonly) CGFloat rightInset;

@property(nonatomic, strong) UIColor* backgroundColor;

// SEPARATORY_TYPE_NO_INSET only
@property(nonatomic, assign, readonly) BOOL showShadow;

+ (NSArray*)insertSeparatorCellData:(SeparatorCellData*)separatorCellData
                    acrossCellDatas:(NSArray*)cellDatas
                            addLast:(BOOL)addLast;

+ (NSArray*)groupOfCellDatas:(NSArray*)cellDatas
      groupSeparatorCellData:(SeparatorCellData*)groupSeparatorCellData
     middleSeparatorCellData:(SeparatorCellData*)middleSeparatorCellData;

+ (NSArray*)groupOfCellDatas:(NSArray*)cellDatas
      groupSeparatorCellData:(SeparatorCellData*)groupSeparatorCellData
      titleSeparatorCellData:(SeparatorCellData*)titleSeparatorCellData
     middleSeparatorCellData:(SeparatorCellData*)middleSeparatorCellData;

+ (NSArray*)groupOfCellDatas:(NSArray*)cellDatas
      groupSeparatorCellData:(SeparatorCellData*)groupSeparatorCellData
      titleSeparatorCellData:(SeparatorCellData*)titleSeparatorCellData
     middleSeparatorCellData:(SeparatorCellData*)middleSeparatorCellData
             forceAllCanHide:(BOOL)forceAllCanHide;

+ (NSArray*)groupOfCellDatas:(NSArray*)cellDatas
     beforeSeparatorCellData:(SeparatorCellData*)beforeSeparatorCellData
      afterSeparatorCellData:(SeparatorCellData*)afterSeparatorCellData
             forceAllCanHide:(BOOL)forceAllCanHide;

@end
